#ifndef __ITEXTUREMANAGER_H__
#define __ITEXTUREMANAGER_H__

#include "CTypes.h"
#include "ITexture.h"
#include "IImage.h"
#include "IFont.h"

class ITextureManager
{
protected:
	STextureCreationParams Actualtcp;
	std::vector<u32>	TextureReferences;
public:
	ITextureManager()						{}
	virtual ~ITextureManager()				{}

	virtual void SetTextureCreationParams(STextureCreationParams *ntcp)															= 0;
	virtual ITexture *CreateTextureBeta(IImage *Image=NULL,CColor color=CColor(1.0,1.0,1.0),vector2du32 Len=vector2du32(1,1),STextureCreationParams *tcp=NULL)	= 0;
	virtual ITexture *CreateTextureFromImage(IImage *Image,STextureCreationParams *tcp=NULL)									= 0;
	virtual ITexture *CreateEmptyTexture(CColor color,vector2du32 Len=vector2du32(1,1),STextureCreationParams *tcp=NULL)		= 0;
	virtual IFont *CreateFontFromImage(IImage *Image,STextureCreationParams *tcp=NULL)											= 0;
	virtual ITexture *CloneTexture(ITexture *Text)																				= 0;
	virtual IFont *CloneFont(IFont *font)																						= 0;
	virtual bool DeleteTexture(ITexture *Tex)																					= 0;
	virtual bool DeleteFont(IFont *Font)																						= 0;
};

POWERLIBRARYENGINE_API ITextureManager *GetTextureManager();
POWERLIBRARYENGINE_API void DeleteTextureManager();
void SetTextureManager(ITextureManager *ntm);
#define TextureManager	GetTextureManager()

#endif
